Replace _LIBCPP_HAS_NO_<C++03 feature> with _LIBCPP_CXX03_LANG in vector. This patch cleans up all usages of the following feature test macros inside <vector> and its tests: * _LIBCPP_HAS_NO_RVALUE_REFERENCES * _LIBCPP_HAS_NO_VARIADICS * _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS Where needed the above guards were replaced with _LIBCPP_CXX03_LANG. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@300410 91177308-0d34-0410-b5e6-96231b3b80d8 
diff --git a/include/vector b/include/vector index 8f404dc..6759dbd 100644 --- a/include/vector +++ b/include/vector 
@@ -527,12 +527,7 @@  is_constructible<  value_type,  typename iterator_traits<_ForwardIterator>::reference>::value>::type* = 0); -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - _LIBCPP_INLINE_VISIBILITY - vector(initializer_list<value_type> __il); - _LIBCPP_INLINE_VISIBILITY - vector(initializer_list<value_type> __il, const allocator_type& __a); -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS +  #if _LIBCPP_DEBUG_LEVEL >= 2  _LIBCPP_INLINE_VISIBILITY  ~vector() @@ -545,7 +540,14 @@  vector(const vector& __x, const allocator_type& __a);  _LIBCPP_INLINE_VISIBILITY  vector& operator=(const vector& __x); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES + +#ifndef _LIBCPP_CXX03_LANG + _LIBCPP_INLINE_VISIBILITY + vector(initializer_list<value_type> __il); + + _LIBCPP_INLINE_VISIBILITY + vector(initializer_list<value_type> __il, const allocator_type& __a); +  _LIBCPP_INLINE_VISIBILITY  vector(vector&& __x)  #if _LIBCPP_STD_VER > 14 @@ -553,17 +555,18 @@  #else  _NOEXCEPT_(is_nothrow_move_constructible<allocator_type>::value);  #endif +  _LIBCPP_INLINE_VISIBILITY  vector(vector&& __x, const allocator_type& __a);  _LIBCPP_INLINE_VISIBILITY  vector& operator=(vector&& __x)  _NOEXCEPT_((__noexcept_move_assign_container<_Allocator, __alloc_traits>::value)); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS +  _LIBCPP_INLINE_VISIBILITY  vector& operator=(initializer_list<value_type> __il)  {assign(__il.begin(), __il.end()); return *this;} -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS + +#endif // !_LIBCPP_CXX03_LANG    template <class _InputIterator>  typename enable_if @@ -588,11 +591,12 @@  assign(_ForwardIterator __first, _ForwardIterator __last);    void assign(size_type __n, const_reference __u); -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS + +#ifndef _LIBCPP_CXX03_LANG  _LIBCPP_INLINE_VISIBILITY  void assign(initializer_list<value_type> __il)  {assign(__il.begin(), __il.end());} -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS +#endif    _LIBCPP_INLINE_VISIBILITY  allocator_type get_allocator() const _NOEXCEPT @@ -676,9 +680,10 @@  {return _VSTD::__to_raw_pointer(this->__begin_);}    _LIBCPP_INLINE_VISIBILITY void push_back(const_reference __x); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES + +#ifndef _LIBCPP_CXX03_LANG  _LIBCPP_INLINE_VISIBILITY void push_back(value_type&& __x); -#ifndef _LIBCPP_HAS_NO_VARIADICS +  template <class... _Args>  _LIBCPP_INLINE_VISIBILITY  #if _LIBCPP_STD_VER > 14 @@ -686,19 +691,19 @@  #else  void emplace_back(_Args&&... __args);  #endif -#endif // _LIBCPP_HAS_NO_VARIADICS -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES +#endif // !_LIBCPP_CXX03_LANG +  _LIBCPP_INLINE_VISIBILITY  void pop_back();    iterator insert(const_iterator __position, const_reference __x); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES + +#ifndef _LIBCPP_CXX03_LANG  iterator insert(const_iterator __position, value_type&& __x); -#ifndef _LIBCPP_HAS_NO_VARIADICS  template <class... _Args>  iterator emplace(const_iterator __position, _Args&&... __args); -#endif // _LIBCPP_HAS_NO_VARIADICS -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES +#endif // !_LIBCPP_CXX03_LANG +  iterator insert(const_iterator __position, size_type __n, const_reference __x);  template <class _InputIterator>  typename enable_if @@ -721,11 +726,12 @@  iterator  >::type  insert(const_iterator __position, _ForwardIterator __first, _ForwardIterator __last); -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS + +#ifndef _LIBCPP_CXX03_LANG  _LIBCPP_INLINE_VISIBILITY  iterator insert(const_iterator __position, initializer_list<value_type> __il)  {return insert(__position, __il.begin(), __il.end());} -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS +#endif    _LIBCPP_INLINE_VISIBILITY iterator erase(const_iterator __position);  iterator erase(const_iterator __first, const_iterator __last); @@ -798,18 +804,16 @@  __base::__destruct_at_end(__new_last);  __annotate_shrink(__old_size);  } - template <class _Up> - void -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - __push_back_slow_path(_Up&& __x); -#else - __push_back_slow_path(_Up& __x); -#endif -#if !defined(_LIBCPP_HAS_NO_VARIADICS) && !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) + +#ifndef _LIBCPP_CXX03_LANG + template <class _Up> void __push_back_slow_path(_Up&& __x); +  template <class... _Args> - void - __emplace_back_slow_path(_Args&&... __args); + void __emplace_back_slow_path(_Args&&... __args); +#else + template <class _Up> void __push_back_slow_path(_Up& __x);  #endif +  // The following functions are no-ops outside of AddressSanitizer mode.  // We call annotatations only for the default Allocator because other allocators  // may not meet the AddressSanitizer alignment constraints. @@ -1219,7 +1223,7 @@  }  }   -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES +#ifndef _LIBCPP_CXX03_LANG    template <class _Tp, class _Allocator>  inline _LIBCPP_INLINE_VISIBILITY @@ -1266,8 +1270,6 @@  }  }   -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS -  template <class _Tp, class _Allocator>  inline _LIBCPP_INLINE_VISIBILITY  vector<_Tp, _Allocator>::vector(initializer_list<value_type> __il) @@ -1297,8 +1299,6 @@  }  }   -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS -  template <class _Tp, class _Allocator>  inline _LIBCPP_INLINE_VISIBILITY  vector<_Tp, _Allocator>& @@ -1340,7 +1340,7 @@  #endif  }   -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES +#endif // !_LIBCPP_CXX03_LANG    template <class _Tp, class _Allocator>  inline _LIBCPP_INLINE_VISIBILITY @@ -1562,7 +1562,7 @@  template <class _Tp, class _Allocator>  template <class _Up>  void -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES +#ifndef _LIBCPP_CXX03_LANG  vector<_Tp, _Allocator>::__push_back_slow_path(_Up&& __x)  #else  vector<_Tp, _Allocator>::__push_back_slow_path(_Up& __x) @@ -1593,7 +1593,7 @@  __push_back_slow_path(__x);  }   -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES +#ifndef _LIBCPP_CXX03_LANG    template <class _Tp, class _Allocator>  inline _LIBCPP_INLINE_VISIBILITY @@ -1613,8 +1613,6 @@  __push_back_slow_path(_VSTD::move(__x));  }   -#ifndef _LIBCPP_HAS_NO_VARIADICS -  template <class _Tp, class _Allocator>  template <class... _Args>  void @@ -1654,8 +1652,7 @@  #endif  }   -#endif // _LIBCPP_HAS_NO_VARIADICS -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES +#endif // !_LIBCPP_CXX03_LANG    template <class _Tp, class _Allocator>  inline @@ -1760,7 +1757,7 @@  return __make_iter(__p);  }   -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES +#ifndef _LIBCPP_CXX03_LANG    template <class _Tp, class _Allocator>  typename vector<_Tp, _Allocator>::iterator @@ -1799,8 +1796,6 @@  return __make_iter(__p);  }   -#ifndef _LIBCPP_HAS_NO_VARIADICS -  template <class _Tp, class _Allocator>  template <class... _Args>  typename vector<_Tp, _Allocator>::iterator @@ -1840,8 +1835,7 @@  return __make_iter(__p);  }   -#endif // _LIBCPP_HAS_NO_VARIADICS -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES +#endif // !_LIBCPP_CXX03_LANG    template <class _Tp, class _Allocator>  typename vector<_Tp, _Allocator>::iterator @@ -2038,7 +2032,7 @@  _VSTD::swap(this->__begin_, __x.__begin_);  _VSTD::swap(this->__end_, __x.__end_);  _VSTD::swap(this->__end_cap(), __x.__end_cap()); - __swap_allocator(this->__alloc(), __x.__alloc(),  + __swap_allocator(this->__alloc(), __x.__alloc(),  integral_constant<bool,__alloc_traits::propagate_on_container_swap::value>());  #if _LIBCPP_DEBUG_LEVEL >= 2  __get_db()->swap(this, &__x); @@ -2233,12 +2227,11 @@  vector(const vector& __v);  vector(const vector& __v, const allocator_type& __a);  vector& operator=(const vector& __v); -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS + +#ifndef _LIBCPP_CXX03_LANG  vector(initializer_list<value_type> __il);  vector(initializer_list<value_type> __il, const allocator_type& __a); -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS   -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES  _LIBCPP_INLINE_VISIBILITY  vector(vector&& __v)  #if _LIBCPP_STD_VER > 14 @@ -2250,12 +2243,12 @@  _LIBCPP_INLINE_VISIBILITY  vector& operator=(vector&& __v)  _NOEXCEPT_((__noexcept_move_assign_container<_Allocator, __alloc_traits>::value)); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS +  _LIBCPP_INLINE_VISIBILITY  vector& operator=(initializer_list<value_type> __il)  {assign(__il.begin(), __il.end()); return *this;} -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS + +#endif // !_LIBCPP_CXX03_LANG    template <class _InputIterator>  typename enable_if @@ -2274,11 +2267,12 @@  assign(_ForwardIterator __first, _ForwardIterator __last);    void assign(size_type __n, const value_type& __x); -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS + +#ifndef _LIBCPP_CXX03_LANG  _LIBCPP_INLINE_VISIBILITY  void assign(initializer_list<value_type> __il)  {assign(__il.begin(), __il.end());} -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS +#endif    _LIBCPP_INLINE_VISIBILITY allocator_type get_allocator() const _NOEXCEPT  {return allocator_type(this->__alloc());} @@ -2387,11 +2381,12 @@  iterator  >::type  insert(const_iterator __position, _ForwardIterator __first, _ForwardIterator __last); -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS + +#ifndef _LIBCPP_CXX03_LANG  _LIBCPP_INLINE_VISIBILITY  iterator insert(const_iterator __position, initializer_list<value_type> __il)  {return insert(__position, __il.begin(), __il.end());} -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS +#endif    _LIBCPP_INLINE_VISIBILITY iterator erase(const_iterator __position);  iterator erase(const_iterator __first, const_iterator __last); @@ -2751,7 +2746,7 @@  }  }   -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS +#ifndef _LIBCPP_CXX03_LANG    template <class _Allocator>  vector<bool, _Allocator>::vector(initializer_list<value_type> __il) @@ -2781,7 +2776,7 @@  }  }   -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS +#endif // _LIBCPP_CXX03_LANG    template <class _Allocator>  vector<bool, _Allocator>::~vector() @@ -2838,7 +2833,7 @@  return *this;  }   -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES +#ifndef _LIBCPP_CXX03_LANG    template <class _Allocator>  inline _LIBCPP_INLINE_VISIBILITY @@ -2913,7 +2908,7 @@  __c.__cap() = __c.__size_ = 0;  }   -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES +#endif // !_LIBCPP_CXX03_LANG    template <class _Allocator>  void @@ -3203,7 +3198,7 @@  _VSTD::swap(this->__begin_, __x.__begin_);  _VSTD::swap(this->__size_, __x.__size_);  _VSTD::swap(this->__cap(), __x.__cap()); - __swap_allocator(this->__alloc(), __x.__alloc(),  + __swap_allocator(this->__alloc(), __x.__alloc(),  integral_constant<bool, __alloc_traits::propagate_on_container_swap::value>());  }